{% extends "base.html" %}

{% block body_class_name %}authorize{% endblock %}

{% block container %}
  <div class="subhead">
    <div class="container">
      <h2 class="heading">{% ifequal step '3' %}快速入门{% else %}注册{% endifequal %}</h2>
    </div>
  </div>

  <div class="content">
    <div class="container">
    {% ifequal step '0' %}
      {% if tip %}
        <div class="invitation-tip alert alert-info" id="tipAlert">
          {% if user.is_authenticated %}
            额..., 似乎您已经拥有了Gitshell账户。是否用当前账户接受邀请？<a href="/bind/{{joinForm.ref_hash.value}}/" class="btn btn-mini btn-success">是的</a>
          {% else %}
            {{tip}}
          {% endif %}
        </div>
      {% endif %}
      <div class="auth-container">

      {% if not tip %}
        <a href="https://github.com/login/oauth/authorize?client_id=63bbd038b8591356a841" class="btn btn-success github-btn"><i class="icon-github"></i>用 GitHub 账户直接登录</a>
        <div class="divider"><span>或</span></div>
      {% endif %}

      <div id="alert" class="alert alert-error hide">
        <p id="usernameAlert" class="hide">用户名已经存在</p>
        <p id="usernameFormat" class="hide">用户名不符合规范，支持[a-zA-Z0-9_-]，不能以-开头</p>
        <p id="emailAlert" class="hide">邮箱已经存在</p>
      </div>
      {% if error %}
        <div class="alert alert-warning">
          <a data-dismiss="alert" class="close"><i class="icon-remove"></i></a>
          <p><strong>出错了！</strong> {{ error }}</p>
        </div>
      {% endif %}
      <form class="form{%if tip and user.is_authenticated %} hide{%endif%}" method="post">
        <fieldset>
          {% csrf_token %}
          {{ joinForm.username }}
          {{ joinForm.email }}
          <input type="password" maxlength="64" name="unencryptPassword" id="unencryptPassword" placeholder="密码区分大小写">
          <span class="hide">{{ joinForm.password }}</span>
          <span class="hide">{{ joinForm.ref_hash }}</span>
          <button id="joinSubmit" class="btn btn-primary" type="submit">{% if tip %}注册,然后加入{%else%}注册{%endif%}</button>
        </fieldset>
      </form>
      {% if tip and user.is_authenticated %}
        <div class="divider"><span>或</span></div>
        <p><a href="javascript:;" id="newReg">用{{joinForm.email.value}}加入？</a></p>
      {% endif %}
      {% if tip and not user.is_authenticated %}
        <p>我已经有账户,不想再注册,<a href="/login/">登录</a></p>
      {% endif %}
      </div>
    {% endifequal %}

    {% ifequal step '1' %}
      <article class="guide">
        <header class="header">
          <h1 class="heading">哈哈哈，欢迎加入Gitshell的快乐家庭</h1>
        </header>
        <p class="alert alert-info" style="padding: 15px 10px;">我们已经发送了一封确认邮件到您的邮箱，您可以在<em>半小时</em>内激活。<a href="#" id="gotoA" target="_blank" class="btn btn-success hide">点击到<span id="gotoDomain"></span></a></p>
        <p>部分不友好的运营商可能会拦截邮件，所以您需要留意一下垃圾邮件。<a href="#" class="readmore"><i class="icon-double-angle-right"></i><span>没有收到邮件？</span></a></p>
        <blockquote class="contact hide"><em>出乎您的意料，请再仔细检查</em>，但无论何时都可以与 <a href="mailto:support@gitshell.com">support@gitshell.com</a> 联络，或者在微博 <a target="_blank" href="http://weibo.com/gitshell">@gitshell</a> 。</blockquote>
      </article>
    {% endifequal %}

    {% ifequal step '3' %}
    <article class="guide">
      <p class="info">我们为您准备了一些入门的指导。当然，我们更相信您已经熟悉Git，如果您觉得是的，那么可以<a href="/dashboard/feed/">直接跳过</a>。</p>
      <section class="tutorial">
        <h3 id="https" class="heading">使用http协议</h3>
        <p>对于较新版本的git，比如1.7.9以上，我们推荐使用http协议来访问git仓库，不需配置ssh key，使用注册用户名和密码就可以访问。</p>
        <ol class="simple-steps">
          <li>
            <p>使用git credential-cache来记住用户名和密码：</p>
            <pre class="command well">
git config --global credential.helper cache</pre>
          </li>
          <li>
            <p>如果需要设置cache的时间，设置记住用户名和密码的时间(秒为单位)：</p>
            <pre class="command well">
git config --global credential.helper 'cache --timeout=10000000'</pre>
          </li>
          <li>
            <p>git默认的postbuffer是比较小的，在push一个大的commit会出现错误，设置postbuffer，相关链接看<a target="_blank" href="http://stackoverflow.com/questions/2702731/git-fails-when-pushing-commit-to-github">这里</a>：</p>
            <pre class="command well">
git config --global http.postBuffer 524288000</pre>
          </li>
          <li>
            <p>在使用多个账户的情况下，为了避免混淆用户，可以使用@yourname来强制指定，比如：</p>
            <pre class="command well">
git clone https://cloudzhou@gitshell.com/cloudzhou/gitshell.git</pre>
          </li>
        </ol>
        <h3 id="ssh" class="heading">使用ssh协议</h3>
        <p>如果您使用任何类unix系统，第一次配置 ssh 公钥密钥，请按照步骤，复制黑色背景字符，在终端执行命令，和编辑文件</p>
        <ol class="simple-steps">
          <li>
            <p>如果不存在 <span class="hash label">~/.ssh/id_rsa</span> ，执行以下命令，生成 ssh 密钥</p>
            <pre class="command well">
ssh-keygen -t rsa  -N ''</pre>
          </li>
          <li>
            <p>查看 ssh 公钥，使用 <span class="hash label">cat</span> 命令，或者用编辑器打开</p>
            <pre class="command well">
cat ~/.ssh/id_rsa.pub</pre>
          </li>
          <li><p>请复制 ssh 公钥的文本内容，点击<a target="_blank" href="/settings/sshpubkey/">ssh公匙管理</a>，输入标识保存公钥</p></li>
          <li><p>点击<a target="_blank" href="/{{ user.username }}/-/repo/create/">创建仓库</a>，详细仓库说明有助于推广</p></li>
          <li>
            <p>你已经可以使用 gitshell 来托管代码了，以下是示范的操作，详细信息请<a href="/help/#learn">开始git的学习</a></p>
            <pre class="command well">
 git clone git@gitshell.com:{{user.username}}/repo_name
 cd repo_name;
 vim README.md
 git add README.md
 git commit -m "init README.md" .
 git push -u origin master</pre>
          </li>
          <li>
            <p>配置 <span class="hash label">user.name</span>, <span class="hash label">user.mail</span> ，两者对后台统计，信息push有重要的作用，选择您注册的用户名和email按照下面配置</p>
          {% if user.is_authenticated %}
            <pre class="command well">
 git config --global user.name "{{ user.username }}"
 git config --global user.email "{{ user.email }}"</pre></li>
          {% else %}
            <pre class="command well">
 git config --global user.name "your_name"
 git config --global user.email "your_email"</pre>
 {% endif %}
 <p>如果不想 global，在每个仓库里面执行 git config ，去掉 --global 参数</p>
        </li>
        <li>
          <p>祝贺，现在您已经熟悉了Git的操作，如果还有什么不懂的问题，可以联系 <a href="mailto:support@gitshell.com">support@gitshell.com</a>，或者官方微博<a target="_blank" href="http://weibo.com/gitshell">http://weibo.com/gitshell</a></p>
        </li>
      </ol>
      <aside class="addtions">
        <h3 class="heading">更多帮助：</h3>
        <ul>
          <li><a href="/help/#sshkey">设置ssh pub key</a></li>
          <li><a href="/help/#repo">创建仓库</a></li>
          <li><a href="/help/#group">协同开发</a></li>
          <li><a href="/help/#faq">gitshell 能做什么？</a></li>
          <li><a href="/help/#faq">gitshell 不能做什么？</a></li>
        </ul>
      </aside>
    </section>
  </article>
  {% endifequal %}

  {% ifequal step '4' %}
  <div class="guide failure">
    <div class="alert alert-warning">
      <p>注册失败，可能是激活url Token过期，请重新通过<a href="/join/0/">注册</a>获取激活url，如果这种情况持续出现，请联系<a href="mailto:support@gitshell.com">support@gitshell.com</a> 或者 <a target="_blank" href="http://weibo.com/gitshell"><img src="/static/img/sina_logo.png"/>gitshell</a></p>
    </div>
  </div>
  {% endifequal %}
</div>{#/.container#}
</div>{#/.content#}
{% endblock %}

{% block js %}
<script>
  $(function(){
    var join_init = function() {
      $('#username').attr('placeholder', '用户名');
      $('#email').attr('placeholder', '邮箱');
      $('#password').attr('placeholder', '密码,包含数字和字母');
    };

    {% ifequal step '0' %}
    join_init();
    {% endifequal %}

    var md5_user_passwd = function() {
      $('#password').val(window.md5($('#unencryptPassword').val()));
    };
    $('#joinSubmit').on('click', md5_user_passwd);

    $('#username').change(function(){
      $('#usernameAlert').hide();
      $('#usernameFormat').hide();
      var username = $(this).val();
      if(!username.match(/^[a-zA-Z0-9_-]+$/)) {
        $('#alert').show();
        $('#usernameFormat').show();
        return;
      }
      $.post('/ajax/user/find/', {csrfmiddlewaretoken: '{{ csrf_token }}', username: username}, function(json){
        if(json.is_user_exist) {
          $('#alert').show();
          $('#usernameAlert').show();
        } else {
          $('#usernameAlert').hide();
          $('#alert').hide();
        };
      });
    });
    $('#email').change(function(){
      $('#emailAlert').hide();
      var email = $(this).val();
      $.post('/ajax/user/find/', {csrfmiddlewaretoken: '{{ csrf_token }}', email: email}, function(json){
        if(json.is_user_exist) {
          $('#alert').show();
          $('#emailAlert').show();
        } else {
          $('#emailAlert').hide();
          $('#alert').hide();
        };
      });
    });
    function goto_button() {
      var prmstr = window.location.search.substr(1);
      var prmarr = prmstr.split ("&");
      var params = {};

      for ( var i = 0; i < prmarr.length; i++) {
        var tmparr = prmarr[i].split("=");
        params[tmparr[0]] = tmparr[1];
      }
      var _goto = params['goto'];
      if(_goto != '') {
        $('#gotoA').attr('href', 'http://' + _goto);
        $('#gotoDomain').text(_goto);
        $('#gotoA').show();
      }
    }
    goto_button();

    $('.guide .readmore').toggle(
        function(e){
          e.preventDefault();
          $(this).find('i').removeClass('icon-double-angle-right').addClass('icon-double-angle-down').end().find('span').text('好吧,我知道了');
          $('blockquote.contact').slideDown(100);
        }, function(e) {
          e.preventDefault();
          $(this).find('i').removeClass('icon-double-angle-down').addClass('icon-double-angle-right').end().find('span').text('没有收到邮件?');
          $('blockquote.contact').slideUp(100);
        }
    );

    $('#newReg').click(
      function(e){
        e.preventDefault();
        var newRegTxt = $(this).text();
        if(newRegTxt != '用当前账户加入?') {
          $(this).text('用当前账户加入?');
        } else {
          $(this).text('用{{joinForm.email.value}}加入?');
        }
        $('#tipAlert').slideToggle(100);
        $('.form').slideToggle(100);
      }
    );
  });
</script>
{% endblock %}
